package com.taxis.action;

import java.util.List;
import java.util.Map;

import javax.mail.Session;

import org.apache.struts2.ServletActionContext;
import javax.servlet.http.HttpServletRequest;
import com.taxis.model.Peticion;
import com.taxis.model.Usuario;
import com.taxis.service.PeticionDaoService;
import com.taxis.service.UsuarioDaoService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class PeticionAction extends ActionSupport {

	private PeticionDaoService peticionService = new PeticionDaoService();
	private Peticion peticion;
	private List<Peticion> peticiones;
	private HttpServletRequest request;
	private int usuario;
	private int idPeticion;
		
	public int getIdUsuario() {
		return usuario;
	}

	public void setIdUsuario(int usuario) {
		this.usuario = usuario;
	}
	
	public Peticion getPeticion() {
		return peticion;
	}

	public void setPeticion(Peticion peticion) {
		this.peticion = peticion;
	}

	public List<Peticion> getPeticiones() {
		return peticiones;
	}

	public String save() throws Exception {
		String fechaReservacion = ServletActionContext.getRequest().getParameter("fechaReservacion");
		String hora = ServletActionContext.getRequest().getParameter("hora");
		
		String partida = ServletActionContext.getRequest().getParameter("pCalle")+ " " + ServletActionContext.getRequest().getParameter("pNumero") + ","+ ServletActionContext.getRequest().getParameter("pDelegacion");
		String destino = ServletActionContext.getRequest().getParameter("dCalle")+ " " + ServletActionContext.getRequest().getParameter("dNumero") + ","+ ServletActionContext.getRequest().getParameter("dDelegacion");
		this.setFecha(fechaReservacion, hora);
		peticion.setPartida(partida);
		peticion.setDestino(destino);
		if (peticion.getIdPeticion() == null) {
			peticionService.insertPeticion(peticion);
		} else {
			peticionService.updatePeticion(peticion);
		}
				
		return SUCCESS;
	}
	
	public String peticion() throws Exception{
		System.out.println("entrando a peticion");
		peticion = peticionService.getPeticion(peticion.getIdPeticion());
		System.out.println("peticion" + peticion.getEstado());
		return SUCCESS;
	}

	public String view() throws Exception{
		peticiones = peticionService.getAllPeticiones();
		return SUCCESS;
	}
	
	public String peticionesUsuario() throws Exception{
		Usuario usr = (Usuario) ServletActionContext.getRequest().getSession().getAttribute("usuario");
		peticiones = peticionService.getPeticionesUsuario(usr.getIdUsuario());
		return SUCCESS;
	}
	
	public String peticionesList() throws Exception
	{
		peticiones = peticionService.getAllPeticiones();
		return SUCCESS;
	}
	
	public String peticionesAdmin() throws Exception{
		peticiones = peticionService.getPeticionesAdmin();
		return SUCCESS;
	}
	
	public String edit() throws Exception{
		peticion = peticionService.getPeticion(peticion.getIdPeticion());
		return SUCCESS;
	}

	public String delete() throws Exception {
		peticionService.deletePeticion(peticion.getIdPeticion());
		return SUCCESS;
	}
	
	public void setFecha(String fReservacion, String hReservacion){
		try{
			
			java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm");
			this.getPeticion().setFecha(formatter.parse(fReservacion.substring(0,10)+" "+hReservacion.substring(11,16)));
		}catch(Exception e){
			e.printStackTrace();
			try{
				java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("MM/dd/yyyy hh:mm a");
				this.getPeticion().setFecha(formatter.parse(new java.text.SimpleDateFormat("MM/dd/yyyy hh:mm a").format(java.util.Calendar.getInstance().getTime())));
			}catch(Exception fatal){
				fatal.printStackTrace();
			}
		}
	}
	
}		